#ifndef UKUIWINDOW_H
#define UKUIWINDOW_H

#include <QObject>
#include <QUuid>
//窗口基类
//XWindow\WaylandWindow

class UKUIWindow : public QObject
{
    Q_OBJECT
public:
    explicit UKUIWindow(QObject *parent = 0);
    virtual ~UKUIWindow();

    //
    //virtual bool isMaxed() = 0;
    QUuid getUuid();

    //以下方法在wayland环境下，删除窗口时不能调用
    virtual QString getAppName() = 0;
    virtual QString getTitle() = 0;

    virtual QIcon getIcon() = 0;
    virtual const quint32 pid() = 0;

    virtual void requestClose() = 0;
    virtual bool isClosable() = 0;

    virtual void requestMax() = 0;
    virtual bool isMaximizable() = 0;
    virtual bool isMaximized() = 0;


    virtual void requestMin() = 0;
    virtual bool isMinimizable() = 0;
    virtual bool isMinimized() = 0;


    virtual void requestActivate() = 0;

    virtual void requestKeepAbove() = 0;
    virtual bool isKeepAboveable() = 0;

    virtual void requestToggleKeepBelow() = 0;
    virtual bool isKeepBelowable() = 0;


    //other property
    virtual bool isMovable() = 0;
    virtual bool isResizable() = 0;

    virtual bool isFullScreenable() = 0;
    virtual bool isFullScreen() = 0;


signals:
    //void windowChanged();

    void iconChanged();
    void titleChanged();

private:
    QUuid uuid;

};

#endif // UKUIWINDOW_H
